#include "moto.h"
#include "wiringPi.h"

//#define PWMPIN 1

Moto::Moto()
{
    pwmPin = 1;    //GPIO 1 或 GPIO 23
    directionPin = 2;
}

// 设置电机PWM引脚、方向引脚
void Moto::init(int pwmpin, int directionpin)
{
    pwmPin = pwmpin;
    directionPin = directionpin;
    wiringPiSetupSys();               // wiringPi库初始化
    pinMode(pwmPin, PWM_OUTPUT);    // 设置GPIO.1为PWM输出
    pinMode(directionPin, OUTPUT);   // 设置GPIO.1为PWM输出
    pwmSetMode(PWM_MODE_BAL);  // 占空比
}

// 设置电机旋转速度
// val:0-1024
void Moto::setSpeed(int val)
{
    if(val > 1024) val = 1024;
    if(val < 0)    val = 0;
    pwmWrite(pwmPin, val); // 输出占空比为val/1024的pwm波
}

// 设置电机旋转方向
void Moto::setDirection(bool d)
{
    if(d)
        digitalWrite(directionPin, HIGH);
    else
        digitalWrite(directionPin, LOW);
}
